package com.whu.waterworks.impl;

import java.util.ArrayList;
import java.util.List;

import org.springframework.orm.hibernate4.HibernateTemplate;

import com.whu.waterworks.model.Commontype;
import com.whu.waterworks.model.Stationnumposition;
import com.whu.waterworks.model.WaterPlant;
import com.whu.waterworks.util.CodeTransformationUtil;
import com.whu.waterworks.dao.StationnumpositionDAO;

public class StationnumpositionDAOImpl implements StationnumpositionDAO{
	private HibernateTemplate hibernateTemplate;
	@Override
	public void save(Stationnumposition entity) {
		// TODO Auto-generated method stub
		hibernateTemplate.save(entity);
		return;
	}

	@Override
	public void delete(Stationnumposition entity) {
		// TODO Auto-generated method stub
		hibernateTemplate.delete(entity);
		return;
	}

	@Override
	public void update(Stationnumposition entity) {
		// TODO Auto-generated method stub
		hibernateTemplate.merge(entity);
		return;
	}

	@Override
	public Stationnumposition findById(String id) {
		// TODO Auto-generated method stub
		
		@SuppressWarnings("unchecked")
		
		List<Stationnumposition> stationnumpositions =(List<Stationnumposition>) hibernateTemplate.find("from Stationnumposition _stationnumposition where _stationnumposition.stationnum='"+id+"'" );
		//System.out.println("StationnumpositionDAOImpl stationnumpositions.size()="+stationnumpositions.size());
		if (stationnumpositions==null || stationnumpositions.size()==0){
			return null;
		}
		else {
			return stationnumpositions.get(0);
		}
		
	}

	@Override
	public List<Stationnumposition> findByProperty(String propertyName,
			Object value) {
		// TODO Auto-generated method stub
		return null;
	}

	@Override
	public List<Stationnumposition> findByPositionname(Object positionname) {
		// TODO Auto-generated method stub
		return null;
	}

	@Override
	public List<Stationnumposition> findByPhonenum(Object phonenum) {
		// TODO Auto-generated method stub
		return null;
	}

	@Override
	public List<Stationnumposition> findAll(String waterPlantCode) {
		// TODO Auto-generated method stub
		String code = CodeTransformationUtil.getStationCodePrefix(waterPlantCode);
		System.out.println("StationnumpositionDAOImpl code="+code);
		@SuppressWarnings("unchecked")
		List<Stationnumposition> stationnumpositions =(List<Stationnumposition>) hibernateTemplate.find("from Stationnumposition _stationnumposition where _stationnumposition.stationnum like '"+code+"%'");
		System.out.println("StationnumpositionDAOImpl stationnumpositions.size()="+stationnumpositions.size());
		if (stationnumpositions.size()==0) {
			return null;
		}
		else {
			return stationnumpositions;
		}
		
	}

	public HibernateTemplate getHibernateTemplate() {
		return hibernateTemplate;
	}

	public void setHibernateTemplate(HibernateTemplate hibernateTemplate) {
		this.hibernateTemplate = hibernateTemplate;
	}

	/* (non-Javadoc)
	 * @see com.whu.waterworks.dao.StationnumpositionDAO#getStationOfMaxCode()
	 */
	@Override
	public Stationnumposition getStationOfMaxCode() {
		// TODO Auto-generated method stub
		hibernateTemplate.setMaxResults(1);
		@SuppressWarnings("unchecked")
		ArrayList<Stationnumposition> rs =(ArrayList<Stationnumposition>) hibernateTemplate.find("from Stationnumposition sp order by stationnum desc");
		hibernateTemplate.setMaxResults(0);
		if(null!=rs && rs.size()>0){
			return rs.get(0);
		}
		return null;
	}
	
	public String getMaxStationByWaterPlantCode(String WaterPlantCode) {
		// TODO Auto-generated method stub
		hibernateTemplate.setMaxResults(1);
		@SuppressWarnings("unchecked")
		ArrayList<Stationnumposition> rs =(ArrayList<Stationnumposition>) hibernateTemplate.find("from Stationnumposition sp where sp.stationnum like '"+WaterPlantCode+"%' order by stationnum desc");
		hibernateTemplate.setMaxResults(0);
		if(null!=rs && rs.size()>0){
			return rs.get(0).getStationnum();
		}
		return null;
	}
	
	public List<Stationnumposition> getAllStation(){
		@SuppressWarnings("unchecked")
		ArrayList<Stationnumposition> rs =(ArrayList<Stationnumposition>) hibernateTemplate.find("from Stationnumposition sp order by stationnum desc");
		if(null!=rs && rs.size()>0){
			return rs;
		}
		return null;
	}

}
